package com.shengwei.truck.driver.vm;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

import com.shengwei.truck.driver.bean.Result;
import com.shengwei.truck.driver.model.DataSource;
import com.shengwei.truck.driver.model.Repository;

/**
 * 修改密码或忘记密码页面的VM层，调用M层去获取数据，同时更改liveData的数据，从而View层就能观察到LiveData数据的
 * 变化，最后更新UI。
 */
public class ModifyPwdViewModel extends ViewModel {
    String TAG = "ModifyPwdViewModel";
    private MutableLiveData<Result<String>> smsLiveData = new MutableLiveData<>();
    private MutableLiveData<Result<String>> modifyPwdLiveData = new MutableLiveData<>();
    private Repository mRepository; //M层引用
    /**
     * 构造函数
     * @param Repository: M层对象实例
     */
    public ModifyPwdViewModel(Repository Repository) {
        this.mRepository = Repository;
    }
    public ModifyPwdViewModel() {
        mRepository = Repository.getInstance(DataSource.getSingleInstance());
    }
    public MutableLiveData<Result<String>> getSmsLiveData() {
        return smsLiveData;
    }
    public MutableLiveData<Result<String>> getModifyPwdLiveData() {
        return modifyPwdLiveData;
    }

    /**获取短信验证码
     * VM层调用M层（Repository+DataSource）
     * @param pageType : USER_REGISTER(注册页面),FORGET_PASSWORD（忘记密码页面）,CHANGE_PASSWORD（修改密码页面）
     * @return
     */
    public MutableLiveData<Result<String>> getSmsCode(String mobileNum,String pageType) {
        smsLiveData = mRepository.getSmsCode(mobileNum,pageType,smsLiveData);
        return smsLiveData;
    }

    /**
     * 修改密码 或 忘记密码 公用的 重置密码接口
     * @param mobileNum： 手机号，用于登录账号
     * @param password：  密码
     * @param captcha：   短信验证码
     * @param pageType:   FORGET_PASSWORD（忘记密码页面）,CHANGE_PASSWORD（修改密码页面）
     */
    public void resetPwd(String mobileNum,String password ,String captcha,String pageType) {
        mRepository.resetPwd(mobileNum,password,captcha,pageType,modifyPwdLiveData);
    }
}